/**
 * userinfo 验证规则模块
 */
const joi = require('joi')

// 添加用户验证规则
const username = joi.string().alphanum().min(3).max(18).required().error(new Error('用户名不合法'))
const password = joi.string().pattern(/^\S{3,18}$/).required().error(new Error('密码不合法'))
const nickname = joi.string().error(new Error('昵称不合法'))
const email = joi.string().email().required().error(new Error('邮箱不合法'))
const permissions = joi.number().min(1).max(10).required().error(new Error('权限不合法'))
const sex = joi.number().min(0).max(3).error(new Error('性别不合法'))

// 删除用户验证规则
const id = joi.number().integer().min(1).required().error(new Error('id不合法'))

// 修改用户信息验证规则
const user_id = joi.number().integer().min(1).required().error(new Error('id不合法'))
const passwordNew = joi.string().pattern(/^\S{3,18}$/).error(new Error('密码不合法'))
const nicknameNew = joi.string().error(new Error('昵称不合法'))
const emailNew = joi.string().email().error(new Error('邮箱不合法'))
const sexNew = joi.number().min(0).max(3).error(new Error('性别不合法'))
const user_biographyNew = joi.string().error(new Error('用户简介不合法'))
const creditNew = joi.number().min(0).max(999)
const permissionsNew = joi.number().min(1).max(10).error(new Error('权限不合法'))

// 查全部用户，分页起始数验证规则
const offset = joi.number().integer().min(0).required().error(new Error('分页不合法'))

// 查询用户，根据nickname模糊查询验证规则
const nicknameFind = joi.string().required().error(new Error('昵称不合法'))

// 添加用户的验证规则对象
exports.add_user_schema = {
  body: {
    username,
    password,
    nickname,
    email,
    permissions,
    sex
  }
}

// 删除用户的验证规则对象
exports.del_user_schema = {
  query: {
    id
  }
}

// 封禁用户的验证规则对象
exports.ban_user_schema = {
  body: {
    user_id
  }
}

// 修改用户的验证规则
exports.update_user_schema = {
  body: {
    user_id,
    password: passwordNew,
    nickname: nicknameNew,
    email: emailNew,
    sex: sexNew,
    user_biographyNew: user_biographyNew,
    creditNew: creditNew,
    permissions: permissionsNew
  }
}

// 查全部用户，分页起始数验证对象
exports.get_user_all_offset_schema = {
  query: {
    offset
  }
}

// 查询某用户，根据username验证对象
exports.get_user_byUsername_schema = {
  body: {
    username
  }
}

// 查询用户，根据nickname模糊查询验证对象
exports.get_user_byNickname_schema = {
  body: {
    nickname: nicknameFind
  }
}
